package com.azt.api.service;

import java.util.List;
import java.util.Map;
import com.azt.api.pojo.GiftExchange;
import com.azt.api.dto.GiftInfoData;
import com.azt.api.pojo.GiftInfo;
import com.azt.api.pojo.GiftStock;
import com.azt.model.page.Pagination;

public interface GiftService {
		/** 
		 * @Title: giftInfoList 
		 * @Description: 后台礼品明细表
		 * @param pageno
		 * @param pagesize
		 * @param params
		 * @return
		 * @return: Pagination
		 * @author: zhoudongdong 2017年2月20日 上午9:51:41 
		 */
		public Pagination giftInfoList(int pageno, int pagesize,Map<String, String> params);
		
		/**
		 * 自动获取一个新的giftCode
		 * @Title: getGiftCode 
		 * @Description: TODO
		 * @return
		 * @return: String
		 * @author: zhoudongdong 2017年2月16日 上午9:27:20
		 */
		public String getGiftCode();
		
		public void addGiftInfo(GiftInfo giftInfo);
		
		public void updateGiftInfo(GiftInfo giftInfo);
		
		public GiftInfo getGiftInfoById(Integer id);
		
		/**
		 * 批量修改状态
		 * @Title: plChangeGiftState 
		 * @Description: TODO
		 * @param ids
		 * @return: void
		 * @author: zhoudongdong 2017年2月16日 下午3:51:58
		 */
		public void plChangeGiftState(String ids);
		
		public void plDeletegiftInfos(String ids);
		
		public void updateGiftStateOne(String id);
		
		public List<GiftStock> getGiftListByGid(Integer gid);
		
		public void addGiftStock(GiftStock stock);
		
		public Pagination giftExchangePage(int pageno, int pagesize,Map<String, String> params);
		

		public void updateExchange(GiftExchange exchange);
		
		public List<GiftExchange>  getExportChange(String states);

		/** 
		 * @Title: getGiftInfoData 
		 * @Description: TODO
		 * @param minPoint 最小积分
		 * @param maxPoint 最大积分
		 * @param state 开放状态  null值默认所有
		 * @param exchangeState 兑换状态0未寄出1已寄出2已充值3未充值  null值默认所有
		 * @return: GiftInfoData
		 * @author: 查恒 2017年2月20日 上午10:17:28 
		 */
		public List<GiftInfoData> getGiftInfoData(Integer minPoint,Integer maxPoint,Integer state ,Integer exchangeState);

		/** 
		 * @Title: searchGift 
		 * @Description: 前台奖品明细列表分页
		 * @param pageNo
		 * @param pageSize
		 * @param searchMap
		 * @return
		 * @return: Pagination
		 * @author: 查恒 2017年2月21日 下午1:21:14 
		 */
		public Pagination searchGift(int pageNo, int pageSize, Map<String, String> searchMap);
		
		/**
		 * 根据用户id查询可兑换的最高级礼品
		 * @Title: selectCanExchangeMax 
		 * @Description: TODO
		 * @param userId
		 * @return
		 * @return: GiftInfo
		 * @author: zhoudongdong 2017年3月2日 上午11:14:01
		 */
		public GiftInfo selectCanExchangeMax(Integer userId);
		
		
		/**
		 * 根据用户id查询不可兑换的最低级礼品
		 * @Title: selectCanNotExchangeMin 
		 * @Description: TODO
		 * @param userId
		 * @return
		 * @return: GiftInfo
		 * @author: zhoudongdong 2017年3月2日 上午11:14:52
		 */
		public GiftInfo selectCanNotExchangeMin(Integer userId);
		

		/**
		 * 获取兑换热门礼品
		 * @Title: selectHotGifts 
		 * @Description: TODO
		 * @param offset
		 * @param limit
		 * @param state
		 * @return
		 * @return: GiftInfoData
		 * @author: 杨程 2017年3月7日 上午11:14:52
		 */
		public List<GiftInfoData> selectHotGifts(Integer offset,Integer limit,Integer state);
		
		/**
		 * 获取礼品详情
		 * @Title: selectGiftInfoDetail 
		 * @Description: TODO
		 * @param giftId
		 * @return
		 * @return: GiftInfoData
		 * @author: 杨程 2017年3月7日 上午11:14:35
		 */
		public GiftInfoData selectGiftInfoDetail(Integer giftId);
		
		/**
		 * 新增礼品兑换
		 * @Title: addGiftExchange 
		 * @Description: TODO
		 * @param giftExchange
		 * @return
		 * @return: GiftExchange
		 * @author: 杨程 2017年3月8日 上午10:55:52
		 */
		public void addGiftExchange(GiftExchange giftExchange);
		
		/**
		 * 修改礼品库存
		 * @Title: updateGiftStock 
		 * @Description: TODO
		 * @param giftExchange
		 * @return
		 * @return: GiftExchange
		 * @author: 杨程 2017年3月9日 上午9:18:21
		 */
		public void updateGiftStock(GiftExchange giftExchange);

		/**
		 * 获取最小兑换积分
		 * @return
		 */
		int getMinIntegralAmount();
		
		
}
